文章目录
  1. 1. 一、模块
  2. 2. 二、模块与文件
  3. 3. 三、名称空间
  4. 4. 四、导入模块
  5. 5. 五、模块内建函数
  6. 6. 六、包

一、模块

模块是一些自我包含并且有组织的代码片段,它可能是一个包含数据成员和方法的类,也可能是一组相关但彼此独立的操作函数。


二、模块与文件

一个文件被看作是一个独立模块,一个模块也可以被看作是一个文件。模块的文件名就是模块名字加扩展名.py,
1、模块名称空间:一个名称空间就是一个从名称到对象的关系映射集合。每个模块都定义了它自己的唯一的名称空间,所以在不同模块间不会出现名称交叉。


三、名称空间

名称空间是名称(标识符)到对象的映射。
1、在执行期间有两或三个活动的名称空间:局部名称空间(不断变化)、全局名称空间、内建名称空间。解释器首先加载内建名称空间,随后加载执行模块的全局名称空间,它会在模块开始执行后变为活动名称空间,这样就有了两个活动的名称空间。
2、名称空间与变量作用域:名称空间是纯粹意义上的名字与对象的映射关系,而作用域指出了用户代码可访问这些名字的物理量。
3、名称查找:解释器先从局部名称空间找,再从全局名称空间找,然后从内建名称空间里找。若都失败了,就会返回错误。


四、导入模块

1、import语句:如果在一个模块的顶层导入,其作用域就是全局的,如果在函数中导入,其作用域就是局部的。
2、from-import语句:可在模块里导入指定的模块属性,即把指定名称导入到当前作用域。
3、多行导入:从一个模块导入许多属性时,import行会越来越长,直至自动换行,且需要一个\。
4、from import (as):使用自己想要的名字来替换模块的原始名称。
5、模块导入的特性:(1)导入模块的顶层代码将直接被执行。
(2)无论一个模块被导入多少次,它都只被加载一次。(加载第一次导入)
(3)用from-import可把名字导入当前名称空间,所以不需要使用属性/句点属性标知来访问模块的标识符。
(4)只从模块导入名字会使那些名字成为局部名称空间的一部分,这可能导致覆盖一个已经存在的具有相同名字的对象。且改变这些变量只影响它局部拷贝而非导入模块的原始名称空间。
(5)从ZIP归档文件导入模块。


五、模块内建函数

1、import ():模块导入。
2、globals()、locals() :包含当前全局符号表的名字的字典/包含局部符号表的名字的字典
3、reload():重新导入一个已经导入的模块,其参数必须是模块自身而不是包含模块名的字符串


六、包

包是一个有层次的文件目录结构,它定义了一个由模块和子包组成的python应用程序执行环境。包也使用句点属性标知来访问它们的函数。
1、绝对导入:导入子包会导致与真正的标准库模块(事实上是它们的名字)发生冲突,会把名字相同的标准库模块隐藏掉。这些名字必须通过Python路径来访问。
2、相对导入:只用于from-import语句,明确在子包中某个模块的位置。

文章目录
  1. 1. 一、模块
  2. 2. 二、模块与文件
  3. 3. 三、名称空间
  4. 4. 四、导入模块
  5. 5. 五、模块内建函数
  6. 6. 六、包